package com.tfjybj.itoo.teach.provider.dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.tfjybj.itoo.teach.entity.StudentTeachClassEntity;
import com.tfjybj.itoo.teach.model.StudentModel;
import com.tfjybj.itoo.teach.model.StudentTeachClassModel;
import com.tfjybj.itoo.teach.model.TeacherTeachClassModel;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * StudentTeachClassDao接口
 * studentTeachClass表
 *
 * @author 田成荣
 * @version 2.0.0
 * @since 2.0.0 2018-11-08 19:34:10
 */
@SuppressWarnings("ALL")
@Repository("studentTeachClassDao")
public interface StudentTeachClassDao extends BaseMapper<StudentTeachClassEntity> {
	
	//region 模板生成：模糊查询
	/**
     * 根据学生_id模糊查询studentTeachClass
     *
     * @param studentId  学生_id
     * @return 模糊查询的studentTeachClass集合
     * @author 田成荣
     * @since 2.0.0 2018-11-08 19:34:10
     */
    List<StudentTeachClassEntity> queryLikeStudentId(@Param("studentId") String studentId);
	//endregion

    /* **********************************以下为非模板生成的内容********************************* */

    /**
     * 根据上课班ID查询所有的行政班ID
     * @param teachClassId  上课班ID
     * @return 该上课班ID下所有的行政班ID
     * @author 严文文
     * @since 2.0.0 2018-11-10 10:40:28
     */
    List<String> queryClassIdsByTeachClassId(@Param("teachClassId") String teachClassId);


    /**
     * 根据学生ID删除上课班对应的学生信息
     *
     * @param studentIds  学生id
     * @param teachClassId  上课班id
     * @param operator  操作者
     * @return
     * @author 严文文
     * @since 2.0.0 2 2018-11-14 09:37:38
     */
    int deleteStudentTeachClass(@Param("studentIds") List<String> studentIds, @Param("teachClassId") String teachClassId, @Param("operator") String operator);

    /**
     * 根据学生id查找上课班Ids
     *
     * @param studentId 学生id
     * @return  String
     * @author 严文文
     * @since 2.0.0 2018-11-18 16:17:20
     */
    List<String> findTeachClassIdsByStudentId(@Param("studentId") String studentId);

    /**
     * 根据学生id查找上课班CourseID
     *
     * @param studentId 学生id
     * @param schoolyear 学年学期
     * @return  String
     * @author 胡泽宽
     * @since 2.0.0 2018年11月19日
     */
    @SuppressWarnings("AlibabaAbstractMethodOrInterfaceMethodMustUseJavadoc")
    List<String> querycourseIDBystudentid(@Param("studentId") String studentId, @Param("schoolyear") String schoolyear);

    /**
     * 根据学生ID删除上课班对应的学生信息
     *
     * @param model 学生ID
     * @param operator  操作者
     * @return int
     * @author 胡泽宽
     * @since 2.0.0 2 2018年11月24日 20:44:39
     */
    int deleteStudentTeachClassbyId(@Param("model") StudentTeachClassModel model, @Param("operator") String operator);
    /**
     * 分页根据关键词模糊查询某上课班下的学生姓名
     *
     * @param strLike
     * @param teachClassId
     * @return
     * @author 严文文
     * @since 2.0.0 2018-11-23 20:56:40
     */
    List<StudentModel> queryTeachClassStudentInfoByNameStrLike(@Param("strLike") String strLike, @Param("teachClassId") String teachClassId);

    /**
     * 分页根据关键词模糊查询某上课班下的学生姓名,学号
     *
     * @param studentName
     * @param studentCode
     * @param teachClassId
     * @return
     * @author 严文文
     * @since 2.0.0 2018-11-24 08:59:38
     */
    List<StudentModel>queryTeachClassStudentInfoByNameAndCodeStrLike(@Param("studentName") String studentName, @Param("studentCode") String studentCode, @Param("teachClassId") String teachClassId);

    /**
     * 根据学生id和上课班id查询id
     * @param studentId
     * @param teachClassId
     * @return
     */
    String findIdIsExist(@Param("studentId") String studentId, @Param("teachClassId") String teachClassId);

    /**
     *校验学生是否重复添加
     * @param studentId
     * @return Boolean
     * @author 胡泽宽
     * @since 2.0.0 2018年12月2日 16:20:20
     */
    int checkByStudentCode(@Param("studentId") String studentId);


    /**
     * 根据学生ID和上课班ID查询id
     * @param studentId
     * @param teachClassId
     * @return
     * @author 严文文
     * @since 2.0.0 2018-12-5 16:22:45
     */
    String  queryIdByStudentIdAndteachClassId(@Param("studentId") String studentId, @Param("teachClassId") String teachClassId);

    /**
     * 根据上课班id查询学生信息
     * @param teachClassId
     * @return 学生姓名list
     * @author 郝雨烁
     * @since 0.0.1 2019年3月6日16:34:48
     */
    List<TeacherTeachClassModel> queryStudents(@Param("teachClassId") String teachClassId);

    StudentTeachClassEntity findByTeachClassIdAndStudentId(@Param("teachClassId") String teachClassId, @Param("studentId") String studentId);
}

